package com.zhihuishu.micro.course.helper;

import java.util.HashSet;
import java.util.Set;

import org.apache.commons.lang3.ArrayUtils;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;

import com.zhihuishu.toolkit.helper.BeanHelper.Convertor;

/**
 * 数组操作辅助类
 * @author	zhanglikun
 * @date	2015年9月22日 下午5:12:48
 */
public class ArrayHelper {

	/**
	 * 集合转换为数组
	 * @param sets	集合源数据
	 * @param array	转换目标数组
	 */
	public static final <T> void toArray(Set<T> sets ,T [] array) {
		Assert.notEmpty(array ,"转换目标数组不能为空!");
		if(!CollectionUtils.isEmpty(sets)) {
			sets.toArray(array) ;
		}
	}
	
	/**
	 * 数组转换为集合
	 * @param sets	集合源数据
	 * @param array	转换目标数组
	 */
	public static final <T> Set<T> toSet(T [] array) {
		if(ArrayUtils.isEmpty(array)) return null ;
		Set<T> sets = new HashSet<T>() ;
		for(T t : array) sets.add(t) ;
		return sets ;
	}
	
	/**
	 * 数组类型转换
	 * @param source
	 * @param target
	 * @param convertor
	 */
	public static final <S ,T> void transTo(S [] source ,T [] target ,Convertor<S, T> convertor) {
		Assert.notEmpty(source);
		Assert.notEmpty(target);
		Assert.notNull(convertor);
		Assert.isTrue(source.length == target.length);
		for(int i = 0 ,len = source.length ; i < len ; i ++) {
			target[i] = convertor.convert(source[i]) ;
		}
	}
	
}
